#ifndef SOCKET_H
#define SOCKET_H

#include<sys/socket.h>
#include<arpa/inet.h>
#include<netinet/in.h>

#include<unistd.h>

int socket_open(int family, int type, int protocol);
void socket_close(int fd);
int socket_accpet(int fd, struct sockaddr *addr, socklen_t *len);

void socket_bind(int fd, const struct sockaddr *addr, socklen_t len);
void socket_connect(int fd, const struct sockaddr *addr, socklen_t len);
void socket_listen(int fd, int backlog);

ssize_t socket_read(int fd, void *buf, size_t nbytes);
ssize_t socket_readn(int fd, void *buf, size_t n);
ssize_t socket_write(int fd, const void *buf, size_t nbytes);

ssize_t socket_writen(int fd, const void *buf, size_t n);
ssize_t socket_recvfrom(int fd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addr_len);
ssize_t socket_sendto(int fd, const void *buf, size_t len, int flags, const struct sockaddr *dst_addr, socklen_t addr_len);



#endif
